The field of computer graphics concerns the creation, storage, manipulation, and display of images by a processor. FIG. 1 illustrates a typical graphics pipeline for this purpose. As shown in FIG. 1, the typical graphics pipeline 11 comprises a host processor 12 for generating image data. Each byte of image data often has 24 data bits defining the color intensity parameters for each picture element (pixel), 8 data bits of which define the intensity of a first color, 8 data bits of which define the intensity of a second color, and 8 data bits of which define the intensity of a third color. The first, second, and third colors could define any color domain, for instance, YUV or RGB (red, green, blue), but for purposes of discussion herein, the latter is assumed. Moreover, each of the foregoing 8-bit bytes defining each color is referred to as a color value for each pixel.
An encoder 14 encodes and processes the image data for storage in a frame buffer 16. The encoder 14 may perform quantization (such as truncation), dithering, rasterization, and/or other subprocessing functionality. In general, quantization involves reducing the bit length of each color value generated by the host processor 12 prior to storage in the frame buffer 16. In other words, when quantization is employed, a smaller number of colors is used to simulate a larger number of colors. As an example, it is sometimes desirable to reduce a 24 bit word defining the color intensities of a pixel to 12 or 8 bits. The process of reducing the bit length of a color value is highly desirable in order to minimize the size of the requisite frame buffer 16, thereby minimizing memory requirements and reducing the cost of the graphics pipeline 11. However, needless to say, quantization results in lost color data for each pixel, and therefore, techniques such as dithering have been developed in an attempt to compensate for this lost color data.
Dithering is well known in the art, see, for example, J. D. Foley and A. P. Van Dam, Fundamental of Interactive Computer Graphics, I.S.B.N.: 0-201-14 468-9 and U.S. Pat. No. 4,956,638 to Larky. et al. In general, dithering is a technique where noise is combined with the full precision color value prior to quantization in order to derive a dithered color value. Then, the dithered color value is quantized to some predetermined number of levels. For example, if the full precision of a color value is represented by an 8-bit byte (i.e., the color can take on a value from 0 to 255), then at each pixel a small amount of noise (typically less than or equal to 5 data bits) is combined with the color value. The dithered color value is then quantized to some smaller number of data bits, typically 2, 3, or 4 data bits. One commonly used quantization method is truncation, but other processes are also used. As a result of dithering and quantization, the color value stored for each pixel in the frame buffer 16 will provide a reasonable approximation of the full precision color that it represents.
After the color value has been stored in the frame buffer 16, the color value may be decoded by a decoder 18 having one or more color maps. As an example, FIG. 1 shows color maps 19r, 19g, 19b corresponding with each color, red, green, and blue. The color values are used as indices into the color maps 19r, 19g, 19b, which are generally color look-up tables, for determining the actual color to illuminate each pixel. Sometimes, correction functions (e.g., gamma function) are programmed into the color maps 19r, 19g, 19b to the desired visual effect on the display device 24. The image data read from the color maps 19r, 19g, 19b is converted to analog signals via respective digital-to-analog converters (DAC) 22r, 22g, 22b, which in turn provides these analog signals to the video display 24. Optionally, the DAC's could be replaced with drivers for a liquid crystal display (LCD).
Because dithering involves reducing the number of colors available for display, dithering gives rise to visible artifacts on the screen of the display device 24. Accordingly, there has been much research in the industry in developing dithering techniques which minimize visible artifacts on the screen of the display device 24. In fact, the artifacts manifest themselves as a matted pattern on the screen of the display device 24. Traditionally, there have been two basic approaches for enhancing the dithering process. One approach involves breaking up the ordered dithered pattern by randomizing the noise across larger pixel regions as opposed to within smaller pixel regions. Another approach involves changing the quantization levels that can be displayed to more closely match the response of the human eye.
Another approach to improving dithered data involves a color recovery system employed in the decoder 18. This system significantly reduces the matting and discrete bands of color in an image. One such color recovery system is described in the application entitled, "Method and Apparatus for Improved Color Recovery in a Computer Graphics System," filed on Mar. 27, 1992, having Ser. No. 07/859,213, the disclosure which is incorporated herein by reference as if set forth in full hereinbelow. The color recovery filter in the foregoing document is situated within the decoder 18 of the graphics pipeline 11. In the process of decoding, the filter essentially invokes an averaging methodology. A weight is assigned to each color value in a region of the filter. The weights around a pixel of interest are averaged together to derive a result which is assigned to the particular pixel of interest. Accordingly, when the filter scans through dithered data from a frame buffer which has come from a flat color field, the data passes through the filter where dithering artifacts are removed and each displayed color value is as close as possible to that in the original flat field. However, when the filter encompasses an edge of a flat color field, the weights accorded to the various color values are redistributed, and the average is obtained in accordance with the redistributed weights. In short, the redistribution of weights involves the following. When the filter encompasses an edge, the weights are based upon which side of the edge the color values are located. The color recovery filter comprises an edge detect circuit corresponding with each of the colors red, green, and blue, for detecting the edges.
Although the foregoing approaches have some merit in improving the dithering and quantization processes while still reducing the amount of data required to be stored in memory, these prior art approaches still are not optimum. Visible artifacts remain in the image displayed by the display device 24 as a result of the dithering and quantization. This is especially true when quantizing a 24 bit word for a pixel to 8 bits. Hence, new approaches to dithering and/or quantization are needed in the industry for generating higher fidelity images, while still reducing the amount of data required to be stored in memory.